package de.fhkoeln.avs.parallelbreadthfirstsearch.infinitegraph;

import java.util.List;

import com.infinitegraph.ConfigurationException;
import com.infinitegraph.StorageException;
import de.fhkoeln.avs.graphbuild.infinitegraph.storage.AvsVertex;



public interface Crawler{
		
	void distributeChildVertices(AvsVertex vertex)  throws Exception;
		
	void sendTBufs(final Integer crawlerInUse) throws InterruptedException;

	void receiveTBuffer(List<AvsVertex> tBuf,Integer crawlerInUse, CrawlerCallback callback) throws Exception;

	String getIdentifier();
	
	void startCrawler() throws StorageException, ConfigurationException;
	
	void stopCrawler();
	
	void cleanCrawler();

	void setCrawlers(List<Crawler> crawlers) throws Exception;

	void setCallback(PFBSCallback callback);
}
